package statechart2;

import java.util.Scanner;

public class Parteidialog {
	/** Partei mit der 'gesprochen' wird*/
	private Partei partei;
	
	/**
	 * Initialisiert Parteidialog
	 */
	public Parteidialog() {
		int eingabe = -1;
		partei = new Partei("Die Tester");
		
		while(eingabe != 0) {
			System.out.println("Was wollen Sie?\n"
					+" (0) Programm beenden\n"
					+" (1) neuen Politiker hinzufügen\n"
					+" (2) Politiker steuern\n"
					+" (3) Politikeruebersicht\n"
					+" (4) Partei umbenennen");
			eingabe=new Scanner(System.in).nextInt();
			
			switch(eingabe) {
			case 1:
				politikerHinzufuegen();
				break;
			case 2:
				politikerSteuern();
				break;
			case 3:
				politikerAnzeigen();
				break;
			case 4:
				parteiUmbenennen();
				break;
			}
		}
		
		System.out.println("Programm beendet!");
	}
	
	/**
	 * Politiker wird mittels Eingabeaufforderung hinzugefuegt.
	 */
	private void politikerHinzufuegen() {
		System.out.println("Name: ");
		partei.mitgliedHinzufuegen(new Scanner(System.in).next());
	}
	
	/**
	 * Zustand eines Politikers wird manipuliert.
	 */
	private void politikerSteuern() {
		int eingabe = -1, zaehler = 1;

		//Abbruch, wenn Politikerliste leer ist
		if (partei.getMitglieder().isEmpty()) {
			System.out.println("Die Partei hat keine Mitglieder.");
			return;
		}
			
		System.out.println("Welcher Politiker");
		//alle Politiker in der Liste durchnummerieren und ausgeben
		for (Politiker p:partei.getMitglieder())
			System.out.println("("+ (zaehler++) +(") "+p.getName()));
		
		eingabe=new Scanner(System.in).nextInt();
		//Es werden nur Politiker innerhalb der Auswahl akzeptiert
		if (eingabe < 0 || eingabe > zaehler-1) {
			System.out.println("Eingabe ungueltig!");
			return;
		}
		
		int polliNr = eingabe-1;	//gewaehlte Nummer merken
		if (partei.getMitglieder().get(polliNr).aktiv()){
			System.out.println("Welches nächste Ereignis?\n"
					+" (0) Lob von der eigenen Partei\n"
					+" (1) Tadel von der eigenen Partei\n"
					+" (2) Lob von der Wirtschaft\n"
					+" (3) Erwischt");
			eingabe=new Scanner(System.in).nextInt();
			switch(eingabe){
			case 0: 
				partei.getMitglieder().get(polliNr).parteilob();
				break;
			case 1:
				partei.getMitglieder().get(polliNr).parteitadel();
				break;
			case 2:
				partei.getMitglieder().get(polliNr).wirtschaftslob();
				break;
			case 3:
				partei.getMitglieder().get(polliNr).erwischt();
				break;
			}
		}
		
		System.out.println(partei.getMitglieder().get(polliNr).toString());
	}
	
	/**
	 * Numeriert alle Politiker und listet die auf.
	 */
	private void politikerAnzeigen() {
		if (partei.getMitglieder().isEmpty())
			System.out.println("Die Partei hat keine Mitglieder.");
		else
			System.out.println(partei.toString());
	}
	
	/**
	 * Eingabeaufforderung zur Umbennennung der Partei.
	 */
	private void parteiUmbenennen() {
		System.out.println("aktueller Name: "+partei.getName());
		System.out.println("neuer Name: ");
		partei.setName(new Scanner(System.in).next());
	}
	
	public static void main(String[] args) {
		new Parteidialog();
	}
}
